package com.wang.friend.service;

import com.wang.friend.domain.user.dto.UserDTO;
import com.wang.friend.domain.user.dto.UserUpdateDTO;
import com.wang.friend.domain.user.vo.LoginUserVO;
import com.wang.friend.domain.user.vo.UserVO;
import com.wang.common.core.domain.R;

public interface IUserService {
    /**
     * 向指定的手机发送验证码
     * @param userDTO 指定的手机号
     */
    boolean sendCode(UserDTO userDTO);

    /**
     * 根据验证码进行登录
     * @param userDTO 手机号和验证码
     * @return 返回token,以便前端存储
     */
    String codeLogin(UserDTO userDTO);

    /**
     * 用户退出登录,逻辑和管理员退出登录一样
     * @param token 前端传过来的用户token
     * @return 返回是否退出成功
     */
    boolean logout(String token);

    /**
     * 返回用户详细信息
     * @param token 用户传过来的token
     * @return 返回用户信息,包括昵称和头像
     */
    R<LoginUserVO> info(String token);

    /**
     * 返回个人中心页面详细信息
     * @return 返回个人中心的信息编辑页面的个人详细信息
     */
    UserVO detail();

    /**
     * 编辑用户详细信息
     * @param userUpdateDTO 用户信息更新参数
     * @return 返回数据库改变行数
     */
    int edit(UserUpdateDTO userUpdateDTO);

    /**
     * 更新用户头像
     * @param headImage 用户头像路径
     * @return 返回数据库改变行数
     */
    int updateHeadImage(String headImage);
}